热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

教程|实现一套DID之总体设计之MovedApp极速入门(五)

Movedapp极速入门
Movedapp 极速入门(一)
第一个 Move dApp 极速入门(二)
操作资源 Move 极速入门(三)
Movedapp 极速入门(四)

作者:李大狗、陈俊峰

在之前的文章里,我们通过精简的方式对 MOVE 语言以及 Starcoin dApp 开发进行了快速入门。

从本篇开始,我们将通过一个实战案例更深入的讲解 MOVE 语言以及 MOVE dApp 的开发 ——这也是 MOVE 生态上的首个 DID 的实现。

0x01 DID & Verifiable Credential 科普

DID 是由 w3c 推出的数字身份协议。

Decentralized identifiers (DIDs) are a new type of identifier that enables verifiable, decentralized digital identity. A DID refers to any subject (e.g., a person, organization, thing, data model, abstract entity, etc.) as determined by the controller of the DID.

Verifiable Credential 是由 w3c 推出的可验证凭证协议。

Credentials are a part of our daily lives; driver's licenses are used to assert that we are capable of operating a motor vehicle, university degrees can be used to assert our level of education, and government-issued passports enable us to travel between countries. This specification provides a mechanism to express these sorts of credentials on the Web in a way that is cryptographically secure, privacy respecting, and machine-verifiable.

在现有的实践中,二者经常被一同实践。但实际上,这两套协议也并非绑定的,我们完全可以用 DID + SBT来替代DID + VC

0x02 设计思路

像羽毛一样轻。

一个 MVP(最小可用版本)的 DID 至少包含如下几个组成部分:

  • DID Syntax(DID 标识符)

    https://www.w3.org/TR/did-core/#did-syntax

  • DID Document in JSON(JSON 格式的 DID 描述文档)

    • Address Aggregator 地址聚合器
    • Endpoint Aggregator 终端服务聚合器

在进行任意的 dApp 实践的时候,设计者都首先要问自己一个问题:

把哪些部分放到链上?把哪些部分放到链下?

这个问题遵循一个即可:

让链上设计尽可能的轻

以 DID 为例,我们可以看到很多 DID 的实现都会把链上搞得过重。事实上,对于 MVP 版本来说,我们在链上实现如下两个模块即可:

  • Addr Aggregator:地址的增删改查
  • Endpoint Addrgator:终端服务的增删改查

然后我们会在链下实现一个 did_sdk,里面包含如下模块:

  • Contract Interactor:和链上合约进行交互
  • DID Handler:将链上数据转化为符合 w3c 标准的格式

0x03 系统架构

DID & VC based SBT 

包含如下三个层级:

  • dApp 层:一个简单的对 DID 应用的 dApp 的实现
  • VC 层:基于 SBT 的可验证凭证的实现
  • 通用 DID 层:通用 DID 的实现

0x04 文件结构

本项目持续 buidl 中,完全开源:

https://github.com/WeLightProject/DID-Solution-In-Move

文件结构如下

.
├── README.md
├── did
│   ├── Move.toml
│   ├── README.md
│   ├── build
│   ├── dapp
│   ├── release
│   └── sources
├── sbt-as-vc
│   ├── Move.toml
│   ├── README.md
│   ├── build
│   ├── dapp
│   ├── release
│   └── sources
└── did_handler
    ├── README.md
    ├── _build
    ├── deps
    ├── lib
    ├── mix.exs
    ├── mix.lock
    └── test

其中,didsbt-as-vc包含 MOVE 合约及纯前端 dApp,did_handler 是使用 elixir 语言实现的 SDK。



扫码关注公众号,回复 “1” 加入 AptosWorld 群


关注 Aptos World

发现 Web 3.0 时代新机遇


推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • Iwanttointegratesort,order,maxandoffsetinafindAllquery.Thefollowingworksfine:我想在fin ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
author-avatar
却冷了_的心_133
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有